package edu.uoc.tds.pac4.beans;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.Vector;

public class Centre extends Entitat implements Esborrable {
	private static final long serialVersionUID = 1L;
	private Vector<TipusEvent> tipusEvent;
	private String codiUniversitat;
	private Universitat universitat;
	
	public Centre(String codi, String nom, String cp, String adreca,
			String telefon1, String telefon2, String fax, String email,
			String web, Date dataAlta, Pais pais, Localitat localitat,
			boolean actiu, Date dataBaixa, String motiuBaixa, Vector<TipusEvent> tipusEvent, String codiUniversitat) {
		super(codi, nom, cp, adreca, telefon1, telefon2, fax, email, web, dataAlta,
				pais, localitat, actiu, dataBaixa, motiuBaixa);
		
		this.tipusEvent=tipusEvent;
		this.codiUniversitat = codiUniversitat;
	}
	
	public String getCodiUniversitat() {
		return codiUniversitat;
	}

	public Universitat getUniversitat() {
		return universitat;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((codiUniversitat == null) ? 0 : codiUniversitat.hashCode());
		result = prime * result
				+ ((tipusEvent == null) ? 0 : tipusEvent.hashCode());
		result = prime * result
				+ ((universitat == null) ? 0 : universitat.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Centre other = (Centre) obj;
		if (codiUniversitat == null) {
			if (other.codiUniversitat != null)
				return false;
		} else if (!codiUniversitat.equals(other.codiUniversitat))
			return false;
		if (tipusEvent == null) {
			if (other.tipusEvent != null)
				return false;
		} else if (!tipusEvent.equals(other.tipusEvent))
			return false;
		if (universitat == null) {
			if (other.universitat != null)
				return false;
		} else if (!universitat.equals(other.universitat))
			return false;
		return true;
	}

	public void setUniversitat(Universitat niversitat) {
		this.universitat = niversitat;
	}
	
	public void setCodiUniversitat(String codiUniversitat) {
		this.codiUniversitat = codiUniversitat;
	}

	/**
	 * Constructor buit
	 */
	public Centre() {
		super();
	}

	public void addTipusEvent(TipusEvent tipusEvent){
		if(!this.tipusEvent.contains(tipusEvent))
			this.tipusEvent.add(tipusEvent);
	}
	
	/**
	 * Construeix una universitat a partir d'un RS
	 * @param rs
	 * @throws SQLException 
	 */
	public void buildFromRS(ResultSet rs) throws SQLException {
		super.buildFromRS(rs, "c");
		this.setCodiUniversitat(rs.getString("c" + "_universitat"));
	}


}
